package day1109.observer;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Mr.ma
 * @since 2022/11/9 16:11
 **/
public abstract class AuctioneerAbstract {
    protected BigDecimal auctionPrice;
    /**
     * 观察者集合，用于存放所有观察者，便于进行通知
     */
    protected List<Bidders> biddersList = new ArrayList<>();

    /**
     * 通知竞拍人，获取商品当前报价
     * @return auctionPrice
     */
    public BigDecimal getAuctionPrice() {
        return auctionPrice;
    }

    /**
     * 竞拍人出价，修改商品当前报价
     * @param auctionPrice
     */
    public void setAuctionPrice(BigDecimal auctionPrice) {
        this.auctionPrice = auctionPrice;
        // 每次更新拍品报价，就通知所有竞拍人
        updateAll(auctionPrice);
    }

    /**
     * 竞拍人出席拍卖,退场
     * @param bidders
     */
    public abstract void attend(Bidders bidders);

    /**
     * 竞拍人退出拍卖会
     * @param bidders
     */
    public abstract void exit(Bidders bidders);

    /**
     * 更新商品报价
     * @param auctionPrice
     */
    public abstract void updateAll(BigDecimal auctionPrice);
}
